﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Extensibility
{
    /// <summary>
    /// The extension resolver can resolve extensions 
    /// and add it to the provided extension point.
    /// </summary>
    /// <typeparam name="TExtension">The type of the extension.</typeparam>
    public interface IBootstrappingExtensionResolver<TExtension>
        where TExtension : IBootstrappingExtension
    {
        /// <summary>
        ///     Resolves bootstrapping extensions.
        /// </summary>
        /// <remarks>
        ///     All extensions resolved through the extension resolver are added 
        ///     to the bootstrapper after manual adding of extensions occurs.
        /// </remarks>
        /// <param name="extensionPoint">The extension point which allows to add the resolved extensions.</param>
        void Resolve(IBootstrappingExtensionPoint<TExtension> extensionPoint);
    }
}
